package gbackup.command;

import core.Shell;

public class HelpCommand extends Command {

	public HelpCommand(Shell shell, String rawCommand) {
		super(shell, rawCommand);
	}

	@Override
	public void execute() {
		Command versionCommand = new VersionCommand(this._shell, this._rawCommand);
		versionCommand.execute();

		this._outputPrintStream.println("three categories: <transfer> <remote> <local>");
		this._outputPrintStream.println();

		this._outputPrintStream.printf("-%-20s\t%-40s\n", "ls", "<remote> UNIX-like ls command");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "ls [directory]", "<remote> UNIX-like ls command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lls", "<local> UNIX-like ls command");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lls [directory]", "<local> UNIX-like ls command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "cd", "<remote> UNIX-like cd command");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lcd", "<local> UNIX-like cd command");
		this._outputPrintStream.println();

		this._outputPrintStream.printf("-%-20s\t%-40s\n", "mkdir", "<remote> UNIX-like mkdir command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rmdir", "<remote> UNIX-like rmdir command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rm", "<remote> UNIX-like rm command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "mv", "<remote> UNIX-like mv command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lmkdir", "<local> UNIX-like mkdir command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lrmdir", "<local> UNIX-like rmdir command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lrm", "<local> UNIX-like rm command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lmv", "<local> UNIX-like mv command (implement not yet)");
		this._outputPrintStream.println();

		this._outputPrintStream.printf("-%-40s\t%-40s\n", "get [source-file]", "<transfer> FTP get command");
		this._outputPrintStream.printf("-%-40s\t%-40s\n", "get [source-file] [destination-file]", "<transfer> FTP get command (implement not yet)");
		this._outputPrintStream.printf("-%-40s\t%-40s\n", "get [source-directory]", "<transfer> FTP get command (implement not yet)");
		this._outputPrintStream.printf("-%-40s\t%-40s\n", "get [source-directory] [destination-directory]", "<transfer> FTP get command (implement not yet)");
		this._outputPrintStream.println();

		this._outputPrintStream.printf("-%-40s\t%-40s\n", "put [source-file]", "<transfer> FTP put command");
		this._outputPrintStream.printf("-%-40s\t%-40s\n", "put [source-file] [destination-file]", "<transfer> FTP put command (implement not yet)");
		this._outputPrintStream.printf("-%-40s\t%-40s\n", "put [source-directory]", "<transfer> FTP put command (implement not yet)");
		this._outputPrintStream.printf("-%-40s\t%-40s\n", "put [source-directory] [destination-directory]", "<transfer> FTP put command (implement not yet)");
		this._outputPrintStream.println();

		this._outputPrintStream.printf("-%-20s\t%-40s\n", "exit", "");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "help", "");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "version", "");
		this._outputPrintStream.println();
	}

}
